Both general-purpose and embedded computing systems often employ operating system software or firmware to control and manage the operation of multiple software or firmware “processes” or applications running concurrently on the computing system, each of which addresses or handles a particular aspect or event within the computing system. While a general-purpose computer system, such as a personal computer, is generally capable of executing any program designed to be compatible with the operating system by way of these processes, embedded computing systems, such as mobile communication devices, data storage systems, audio/video entertainment components, and many others, typically employ multiple processes to perform various tasks, often in real-time, and typically using hardware of some restricted capability or performance compared to many general-computing platforms.
In a general-purpose computing system, the operating system software of the computing system often employs an initialization process to initiate or “spawn” several other processes or applications that are utilized to render the computing system operational by providing a console by which a user may access the computing system. For example, the Unix and Linux operating systems employ a parent process named init to create other processes listed in a file named inittab. Generally, these spawned processes include processes that allow users to log in to the computer system, as well as more autonomous processes or daemons necessary for system operation. Once these processes are initiated, the system typically operates in a normal operating mode, whereby control of the operation of the system is dictated primarily by the actions of the user by way of a wide range of user-selected applications run on the system.
In the case of embedded computing systems, user access and control is generally restricted to user commands for guiding the primary operation of the embedded system. For example, a satellite or cable television receiver or “set-top box” often provides commands that are closely associated with the receiving and recording of audio/video programming, as opposed to allowing the user to run a range of applications similar to those associated with a general-purpose system.
However, embedded systems are often required to function periodically in an operating mode other than the mode normally associated with the system. For example, in television set-top boxes and other embedded systems, the firmware resident in the system may require periodic updating. To facilitate such updating, the system often suspends its normal operating mode in favor of a “firmware update” operating mode since the firmware used to perform normal operations is being rewritten in memory. Once the updating of the firmware is complete, the system may then resume normal operations.